package config

import "time"

type Yml struct {
	App      App      `yaml:"app" json:"app"`
	Db    	 Db    	  `yaml:"db" json:"db"`
	Redis    Redis 	  `yaml:"redis" json:"redis"`
	Jwt   	 Jwt   	  `yaml:"jwt" json:"jwt"`
	Etcd     Etcd     `yaml:"etcd" json:"etcd"`
	Mq       MQ       `yaml:"mq" json:"mq"`
	Es       ES       `yaml:"es" json:"es"`
	Email    Email    `yaml:"email" json:"email"`
	LogFiles []string `yaml:"logfiles" json:"logfiles"`
}

type App struct {
	Name string `yaml:"name" json:"name"`
	Port string `yaml:"port" json:"port"`
	Role string `yaml:"role" json:"role"`
	Log  Log    `yaml:"log" json:"log"`
}

type Db struct {
	Driver   string `yaml:"driver" json:"driver"`
	Host     string `yaml:"host" json:"host"`
	Port     string `yaml:"port" json:"port"`
	Dbname   string `yaml:"dbname" json:"dbname"`
	Username string `yaml:"username" json:"username"`
	Password string `yaml:"password" json:"password"`
	Charset  string `yaml:"charset" json:"charset"`
	Prefix   string `yaml:"prefix" json:"prefix"`
	TimeZone string `yaml:"timezone" json:"timezone"`
}

type Redis struct {
	Driver   string `yaml:"driver" json:"driver"`
	Host     string `yaml:"host" json:"host"`
	Port     string `yaml:"port" json:"port"`
	Database int    `yaml:"database" json:"database"`
	Password string `yaml:"password" json:"password"`
}

type Jwt struct {
	Secret string          `yaml:"secret" json:"secret"`
	Expire time.Duration   `yaml:"expire" json:"expire"`
}


type Log struct {
	Info  string `yaml:"info" json:"info"`
	Error string `yaml:"error" json:"error"`
	Debug string `yaml:"debug" json:"debug"`
	Warn  string `yaml:"warn" json:"warn"`
}

type Etcd struct {
	Host     string `yaml:"host" json:"host"`
	Port     string `yaml:"port" json:"port"`
	Username string `yaml:"username" json:"username"`
	Password string `yaml:"password" json:"password"`
	Prefix   string `yaml:"prefix" json:"prefix"`
}

type MQ struct {
	Host              string        `yaml:"host" json:"host"`
	Port              string        `yaml:"port" json:"port"`
	Username          string        `yaml:"username" json:"username"`
	Password          string        `yaml:"password" json:"password"`
	MaxReconnectNum   int           `yaml:"max_reconnect_num" json:"max_reconnect_num"`
	WaitReconnectTime int `yaml:"wait_reconnect_time" json:"wait_reconnect_time"`
}

type ES struct {
	Host     string `yaml:"host" json:"host"`
	Port     string `yaml:"port" json:"port"`
	Username string `yaml:"username" json:"username"`
	Password string `yaml:"password" json:"password"`
}

type Email struct {
	// ServerHost 邮箱服务器地址，如腾讯企业邮箱为smtp.exmail.qq.com
	ServerHost string `yaml:"server_host" json:"server_host"`
	// ServerPort 邮箱服务器端口，如腾讯企业邮箱为465
	ServerPort string `yaml:"server_port" json:"server_port"`
	// UserName　发件人邮箱地址
	UserName string `yaml:"username" json:"username"`
	// Password 发件人邮箱密码（注意，这里是明文形式）
	Password string `yaml:"password" json:"password"`
	// Toers 接收者邮件，如有多个，则以英文逗号(“,”)隔开，不能为空
	Toers []string `yaml:"toers" json:"toers"`
}
